﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using CastleDefender.Platform;
using Microsoft.Xna.Framework;
using CastleDefender.Platform.ScreenBehavior;
using Microsoft.Xna.Framework.Graphics;
using CastleDefender.ConfigFolder;

namespace CastleDefender.Object
{
    public partial class Button : Animation2D
    {
        #region VARIABLE

        protected bool blnTouch;
        protected bool blnActive;

        #endregion

        #region CONSTRUCTOR

        public Button(Game myGame, ref Texture2D texture, int widthFrame, int heightFrame, bool isStatic,bool allFrames, Vector2 position)
            : base(myGame, ref texture, widthFrame, heightFrame, isStatic, allFrames, position, Config.ButtonTimeSpan)
        {
            blnActive = false;
            blnTouch = false;
        }

        #endregion

        #region PUBLIC METHOD

        public override void Update(GameTime gameTime)
        {
            UpdateButton();
            base.Update(gameTime);
        }

        //Nhận tọa độ con trỏ từ bên ngoài
        public void GetTouchPosition(Point pos)
        {
            if (recBounds.Contains(pos))
            {
                blnTouch = true;
            }
            else
            {
                blnTouch = false;
            }
        }

        #endregion

        #region PRIVATE METHOD

        //Cập nhật các trạng thái nút bấm
        private void UpdateButton()
        {
            //Nếu chạm vào nút bấm
            if (blnActive)
            {
                //Nút bấm động
                if (!blnIsStatic)
                {
                    blnAction = true;
                }

                //Nút tĩnh
                else
                {
                    intState = 0;
                    intActiveFrame = 1;
                }
            }

            else
            {
                if (!blnIsStatic)
                {
                    blnAction = false;
                }

                else
                {
                    intState = 0;
                    intActiveFrame = 0;
                }
            }
        }

      

        #endregion

        #region PUBLIC PROPERTIES

        //Trả giá trị blnTouch
        public bool Touch
        {
            get { return blnTouch; }
            private set { }
        }

        //Nhận trả giá trị blnActive
        public bool Active
        {
            get { return blnActive; }
            set { blnActive = value; }
        }
        #endregion

    }
}
